// int min_dist = INT_MAX;
    
//     // 查找s1在前s2在后的最小距离
//     int last_s1 = -1, last_s2 = -1;
//     for (int i = 0; i < n; i++) {
//         if (s[i] == s1) {
//             last_s1 = i;
//             if (last_s2 != -1) {
//                 min_dist = min(min_dist, abs(i - last_s2));
//             }
//         }
//         if (s[i] == s2) {
//             last_s2 = i;
//             if (last_s1 != -1) {
//                 min_dist = min(min_dist, abs(i - last_s1));
//             }
//         }
//     }
    
//     // 如果s1和s2相同，需要特殊处理
//     if (s1 == s2) {
//         int last = -1;
//         for (int i = 0; i < n; i++) {
//             if (s[i] == s1) {
//                 if (last != -1) {
//                     min_dist = min(min_dist, abs(i - last));
//                 }
//                 last = i;
//             }
//         }
//     }

//     if (min_dist == INT_MAX) {
//         cout << -1 << endl;
//     } else {
//         cout << min_dist << endl;
//     }
    
//     return 0;


#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
    int n;
    cin>>n;
    string s1,s2;
    string s;
    cin>>s1>>s2;
    int prev1=-1,prev2=-1,ret=INT_MAX;
    for(int i=0;i<n;i++){
        cin>>s;
        if(s==s1){
            if(prev2!=-1){
                ret=min(ret,i-prev2);
            }
            prev1=i;
        }
        else if(s==s2){
            if(prev1!=-1){
                ret=min(ret,i-prev1);
            }
            prev2=i;
        }
    }
    if(ret==INT_MAX){
        cout<<-1<<endl;
    }
    else{
        cout<<ret<<endl;
    }
    return 0;
}
